Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

298
Visualizações
Reemplazar una letra con "#" y viceversa

Soy nuevo en Python y estoy haciendo un programa de prueba que reemplaza todas las letras en un texto dado con signos.

 def encrypted(request): text = request.GET['text'] text = text.replace("a", "#.") text = text.replace("b", "##.") text = text.replace("c", "###.") text = text.replace("d", "####.") text = text.replace("e", "#####.") text = text.replace("f", "######.") etc... return render(request, 'encrypted.html', {'text': text})

Lo he conseguido pero he probado a revertirlo de la misma manera y no funciona.

 def decrypted(request): ftext = request.GET['text'] ftext = ftext.replace("#.", "a") ftext = ftext.replace("##.", "b") ftext = ftext.replace("###.", "c") ftext = ftext.replace("####.", "d") ftext = ftext.replace("#####.", "e") etc... return render(request, 'decrypted.html')

Así que el texto no aparece en absoluto en la página.

 <html lang="en"> <head> <meta charset="UTF-8"> <title>yCrypt</title> </head> <body> TEXT DECRYPTION: {{ftext}} </body> </html>

Me pregunto por qué no muestra problemas de código en absoluto. ¿Quizás hay una manera más simple de hacer esto posible?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No estoy siguiendo completamente lo que está tratando de hacer aquí, pero su primera llamada de replace en la función decrypted y reemplazará cada aparición de "#". con la letra "a" en cada "letra encriptada", no solo la de "a".

Las llamadas posteriores a replace no coincidirán con nada porque su "#" final. ya ha sido reemplazada erróneamente por la letra "a".

Para que esto funcione según lo diseñado, tendría que invertir el orden de sus llamadas de replace para encontrar primero las coincidencias más largas.

Y para que se represente, también debe pasarlo en el contexto a su procesador de plantilla.

 def decrypted(request): ftext = request.GET['text'] etc... ftext = ftext.replace("#####.", "e") ftext = ftext.replace("####.", "d") ftext = ftext.replace("###.", "c") ftext = ftext.replace("##.", "b") ftext = ftext.replace("#.", "a") return render(request, 'decrypted.html', { "ftext": ftext })
over 4 years ago · Santiago Trujillo Relatório

0

No soy un experto pero puedes probar

 def decrypted(request): ftext = request.GET['text'] ftext = ftext.replace("#.", "a") ftext = ftext.replace("##.", "b") ftext = ftext.replace("###.", "c") ftext = ftext.replace("####.", "d") ftext = ftext.replace("#####.", "e") return render(request, 'decrypted.html',{'ftext':ftext})
over 4 years ago · Santiago Trujillo Relatório

0

La razón por la que no funciona es que la codificación de a es una subcadena de b, c, d, e, etc.

 a = #. b = ##. c = ###.

como se puede ver #. está al final de cada cadena codificada

Entonces, cuando codifica por primera vez, digamos abc , se convierte en #.##.###. Cuando ejecuta el paso de decodificación que usa replace("#.", "a") obtiene el resultado a#a##a donde cada #. se reemplaza por a y, como puede ver, no quedan puntos.

La solución es bastante simple en lugar de ###. formato, utilice .###. formato

 a = .#. b = .##. c = .###.

esto garantizará solo el número correcto de # coincidencias y no una subcadena.

Entonces, cuando codifica por primera vez, digamos abc , se convierte en .#..##..###. Cuando ejecuta el paso de decodificación que usa replace(".#.", "a") obtiene el resultado a.##..###. como puede ver, los códigos para b y c todavía están allí.

En una nota al margen, puede usar bucles para hacer que el código sea mucho más pequeño.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda